Quite common among digital front ends (DFEs) is the ability to identify object types (text, image, strokes, fill, line art, etc.) embedded in a given page description language (PDL) master. These object types can then be used to optimize the processing of the contone data prior to transmission to the print engine. For some engines, it is possible to supply rendering “hints” or “tags” for each pixel, allowing the engine to optimally render the objects on the page, pixel by pixel. For example, for some printers, the tags are simply halftone screen specifications, and the DFE has complete control over the way each pixel is rendered.
Other engines also have the capability to accept tags or hints to optimize rendering, and these are generally assigned based on the object type. For these engines, a tag or hint tells the rendering engine which rendering conditions to use for a particular object. These tags or hints are generally specified for the entire object. Positive tinted text on white, in the case of some printers, is assigned the “text” hint. For some printing systems, for example the Xerox iGen3, the text hint may instruct the engine rendering module to place high-resolution outline cells at the perimeter of the object (while rendering the body of the text with the default halftone); this technique will generally improve the sharpness of the text. Similarly, negative (white) text on a tinted background may receive the “text” hint, and the background may receive the “fill” hint. For some printers, such as iGen3, outlining is explicitly disabled for the “fill” hint. Since all of the pixels that would be converted to outline cells reside on the “fill” portion of the white text/fill boundary, no outlining would therefore be realized for negative text. This presents a serious image quality defect for white text objects on tinted fills, as the edges of this negative text may appear ragged. The problem can also exist at the boundaries of two different object types in which a hint for one object explicitly disables rendering that would be pleasing at the boundary of the other object.
A method of improving edge rendering of objects, according to one aspect of the invention, includes providing a first object which has a portion of a common edge with a second object; wherein the first object has associated with it a first region of a tag plane for defining rendering hints for rendering the first object; wherein the second object has associated with it a second region of the tag plane for defining rendering hints for rendering the second object; specifying a number of pixels located on the portion of the common edge between the first object and the second object to be modified, wherein modification may include increasing or decreasing the number of pixels on one of the first object or the second object; and modifying the first region of the tag plane corresponding to the first object by the specified number of pixels at the boundary of the first and second objects. If the first region of the tag plane is increased by the specified number of pixels at the boundary of the first and second objects, the second region of the tag plane is decreased by the specified number of pixels at the boundary of the first and second objects. Correspondingly, if the second region of the tag plane is increased by the specified number of pixels at the boundary of the first and second objects, the first region of the tag plane is decreased by the specified number of pixels at the boundary of the first and second objects.
A method of improving edge rendering of objects, according to another aspect of the invention, includes providing a first object which has a portion of a common edge with a second object; wherein the first object is specified to be rendered on top of the second object, is represented by abstract object descriptors and has associated with it a first tag plane for defining rendering hints for rendering the first object; wherein the second object is represented by abstract object descriptors and has associated with it a second tag plane for defining rendering hints for rendering the second object; specifying a direction and number of pixels located on the portion of the common edge between the first object and the second object to be modified; creating a new object (or “frame”), wherein the new object is to be rendered on top of the first and second objects, is represented by abstract object descriptors and has associated with it a new tag plane for defining rendering hints for rendering the new object; wherein the new object is defined to be located at the interface between the first and second objects and having a width determined by the specified number of pixels and an inner geometrical boundary and an outer geometrical boundary; if the specified direction is toward the first object, setting the outer geometrical boundary of the new object to be placed at the interface between the first and second object, and setting the tag value for each pixel of the new object to be equal to the tag value of the second object at each perimeter pixel location; and if the specified direction is away from the first object, setting the inner geometrical boundary of the new object to be placed at the interface between the first and second objects, and setting the tag value for each pixel of the new to be equal to the tag value of the first object at each perimeter pixel location. If the specified direction is toward the first object, setting the contone value of each pixel of the new object to be equal to the contone value of the corresponding pixel of the first object; and if the specified direction is away from the first object, setting the contone value of each pixel of the new object to be equal to the contone value of the corresponding pixel of the second object.
The method may be applied to white objects on non-white objects. The white object may be of any type, such as a text object, a line art object, etc. The non-white (or tint) object may be of any type, such as a fill object and a stroke object. Both objects may be text objects, for example, such as when a text object is placed over a shadow text object. The method of improving edge rendering of objects, especially white objects on non-white objects, overcomes the problems of the prior art by varying the size of the object in the tag plane in order to improve edge rendering of its corresponding object. The boundary of the contone plane of the two objects remains the same; however, the boundary of the tag plane corresponding to the interface between the two objects is modified in order to better render this interface. Thus in the case of the white object on a tint fill object, by expanding the region of the tag plane associated with the white object, the edge pixels at the negative text/fill interfaces can be rendered in a fashion consistent with positive text on a white background.
The method involves expansion (or contraction) of object tag regions by one or more pixels into the surrounding region, with the surrounding tag regions having a corresponding contraction (or expansion). The objects of interest (e.g., white text) are first identified; the corresponding object tag region is then spread or choked, in a fashion analogous to trapping. This tag plane spread or choke operation can be performed in object space prior to rasterizing, or after the object data are converted to a run-length encoded format, or even in the fully rasterized form. In the case of the negative text on a tint background, by dilating the tag plane for the negative text object, the “text” hint would be forced at least one pixel into the tint object plane everywhere along the perimeter of the negative text. For the Xerox iGen3 system, this would then enable outlining around the perimeter of the text/fill interface, providing greatly improved negative text rendering.
A compound object for transmission to a print engine, according to another aspect of the invention, includes a first object and a second object, wherein the first object has a portion of a common edge with a second object; a tag plane for defining rendering hints for rendering the compound object; wherein the first object has associated with it a first region of the tag plane for defining rendering hints for rendering the first object; wherein the second object has associated with it a second region of the tag plane for defining rendering hints for rendering the second object; a modification region located at the portion of the common edge, wherein the modification region includes a specified number of pixels located on the portion of the common edge between the first object and the second object; and wherein the modification region increases one of the first region and the second region of the tag plane by the specified number of pixels at the boundary of the first and second objects and correspondingly decreases the other of the first region and the second region of the tag plane by the specified number of pixels at the boundary of the first and second objects.
A compound object for transmission to a print engine, according to yet another aspect of the invention, includes a first object and a second object, wherein the first object has a portion of a common edge with a second object; wherein the first object is specified to be rendered on top of the second object, is represented by abstract object descriptors and has associated with it a first tag plane for defining rendering hints for rendering the first object; wherein the second object is represented by abstract object descriptors and has associated with it a second tag plane for defining rendering hints for rendering the second object; a frame object, wherein the frame object is to be rendered on top of the first and second objects, is represented by abstract object descriptors and has associated with it a new tag plane for defining rendering hints for rendering the new object; wherein the frame object is located at the interface between the first and second objects, has a width determined by a specified number of pixels, an inner geometrical boundary and an outer geometrical boundary; wherein, if a specified direction is toward the first object, the outer geometrical boundary of the frame object is located at the interface between the first and second objects, and the tag value for each pixel of the frame object is the tag value of the second object at each perimeter pixel location; and wherein, if the specified direction is away from the first object, the inner geometrical boundary of the new object is located at the interface between the first and second objects, and the tag value for each pixel of the frame object is the tag value of the first object at each perimeter pixel location.